"use strict";var e=require("@flatfile/api"),n=require("@flatfile/listener"),t=require("@flatfile/embedded-utils"),o=require("@flatfile/plugin-record-hook");function i(e,n,t,o){return new(t||(t=Promise))((function(i,a){function r(e){try{d(o.next(e))}catch(e){a(e)}}function l(e){try{d(o.throw(e))}catch(e){a(e)}}function d(e){var n;e.done?i(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(r,l)}d((o=o.apply(e,n||[])).next())}))}function a(e,n,t,o,i,a,r,l,d,s,c,f){const p=`${d||"https://spaces.flatfile.com"}/space/${e}?token=${encodeURIComponent(n)}`,u=document.createElement("div");u.innerHTML='\n \n \n ',u.classList.add("flatfile-close-button");const m=document.createElement("iframe");m.src=p,m.id="flatfile_iframe",m.onload=()=>{b.style.display="none",console.log("Flatfile loaded successfully.")},m.onerror=()=>{console.error("An error occurred while loading Flatfile.")};const h=document.createElement("div");h.classList.add("flatfile_iframe-wrapper"),h.style.display="block";const b=document.createElement("div");b.classList.add("spinner"),b.style.display="block",h.appendChild(b),t&&(h.appendChild(u),h.classList.add("flatfile_displayAsModal")),h.appendChild(m);const y=function(e,n,t,o,i,a){const r=document.createElement("div");r.classList.add("flatfile_outer-shell");const l=document.createElement("div");l.classList.add("flatfile_inner-shell");const d=document.createElement("div");d.classList.add("flatfile_modal");const s=document.createElement("div");s.classList.add("flatfile_button-group");const c=document.createElement("div");c.classList.add("flatfile_modal-heading"),c.textContent=t;const f=document.createElement("div");f.classList.add("flatfile_modal-text"),f.textContent=o;const p=document.createElement("div");p.classList.add("flatfile_button","flatfile_secondary"),p.textContent=a,p.addEventListener("click",(e=>{e.stopPropagation(),n()}));const u=document.createElement("div");return u.classList.add("flatfile_button","flatfile_primary"),u.textContent=i,u.addEventListener("click",(n=>{n.stopPropagation(),e()})),s.append(p,u),d.append(c,f,s),l.appendChild(d),r.appendChild(l),r}((()=>{const e=[...Array.from(document.getElementsByClassName("flatfile_iframe-wrapper")),...Array.from(document.getElementsByClassName("flatfile_outer-shell"))];for(let n of e)n.style.display="none";f&&f(),null==c||c.unsubscribeAll(),null==s||s.onClose({})}),(()=>{y.style.display="none"}),i,a,r,l);y.style.display="none",document.body.appendChild(y),u.onclick=()=>{const e=document.querySelector(".flatfile_outer-shell");e?e.style.display="block":y.style.display="block",null==c||c.unsubscribeAll()};const v=o,g=document.getElementById(v);g?g.appendChild(h):console.error("Mount element not found in the DOM."),window.addEventListener("message",(e=>{e.data&&"job:outcome-acknowledged"===e.data.topic&&"complete"===e.data.payload.status&&e.data.payload.operation===(null==s?void 0:s.operation)&&(h.style.display="none")}),!1);const x=document.createElement("style");x.innerHTML="\n :root {\n --ff-primary-color: #4c48ef;\n --ff-secondary-color: #616a7d;\n --ff-text-color: #090b2b;\n --ff-dialog-border-radius: 4px;\n --ff-border-radius: 5px;\n --ff-bg-fade: rgba(0, 0, 0, 0.2);\n}\n\n.flatfile_iframe-wrapper {\n display: none;\n}\n\n.flatfile_iframe-wrapper {\n min-width: 768px;\n min-height: 600px;\n width: 992px;\n height: 600px;\n}\n\n.flatfile_iframe-wrapper.flatfile_displayAsModal {\n box-sizing: content-box;\n position: fixed;\n top: 0;\n left: 0;\n width: calc(100% - 60px); /* 30px padding on the left and right */\n max-width: 100vw; /* viewport width */\n height: calc(100vh - 60px); /* 30px padding on the top and bottom */\n padding: 30px;\n background: var(--ff-bg-fade);\n z-index: 1000; \n}\n\n.flatfile_displayAsModal .flatfile-close-button {\n position: absolute;\n z-index: 10;\n top: 20px;\n right: 5px;\n display: flex;\n justify-content: center;\n width: 25px;\n align-items: center;\n border-radius: 100%;\n cursor: pointer;\n border: none;\n background: #000;\n box-shadow: 0px 0px 10px 0px rgba(0,0,0,0.5);\n animation: glow 1.5s linear infinite alternate;\n transition: box-shadow 0.3s ease;\n height: 25px;\n}\n\n.flatfile_displayAsModal .flatfile-close-button:hover {\n box-shadow: 0px 0px 10px 0px rgba(0, 0, 0, 0.8);\n}\n\n.flatfile_displayAsModal .flatfile-close-button svg {\n fill: var(--ff-secondary-color);\n width: 10px;\n}\n\n#flatfile_iframe {\n border-width: 0px;\n width: 100%;\n height: 100%;\n position: relative;\n}\n\n.flatfile_displayAsModal #flatfile_iframe {\n border-radius: var(--ff-border-radius);\n background: rgb(255, 255, 255);\n}\n\n.flatfile_outer-shell {\n background-color: var(--ff-bg-fade);\n border-radius: var(--ff-border-radius);\n top: 0;\n left: 0;\n width: calc(100% - 40px);\n height: calc(100vh - 40px);\n padding: 20px;\n display: block;\n overflow-y: auto;\n position: fixed;\n tab-size: 4;\n z-index: 1200;\n}\n\n.flatfile_inner-shell {\n align-items: center;\n box-sizing: border-box;\n display: flex;\n justify-content: center;\n min-height: 100%;\n padding: 0px;\n tab-size: 4;\n text-align: left;\n}\n\n.flatfile_modal {\n box-sizing: border-box;\n display: block;\n padding: 1.5em;\n tab-size: 4;\n text-align: left;\n background: #fff;\n min-width: 500px;\n max-width: 500px;\n border-radius: var(--ff-dialog-border-radius);\n}\n\n.flatfile_button-group {\n display: flex;\n justify-content: flex-end;\n}\n\n.flatfile_button {\n border: 0;\n border-radius: 1px;\n border-radius: 1px;\n margin-left: 15px;\n padding: 8px 12px;\n cursor: pointer;\n}\n\n.flatfile_primary {\n border: 1px solid var(--ff-primary-color);\n background-color: var(--ff-primary-color);\n color: #fff;\n}\n\n.flatfile_secondary {\n color: var(--ff-secondary-color);\n}\n\n.flatfile_modal-heading {\n font-size: 1.225em;\n font-weight: 600;\n margin-bottom: 0.4em;\n color: var(--ff-text-color);\n}\n\n.flatfile_modal-text {\n font-size: 14px;\n line-height: 1.25em;\n margin-bottom: 2em;\n color: var(--ff-secondary-color);\n}\n\n.spinner {\n border: 4px solid rgba(255, 255, 255, 0.7);\n border-top: 4px solid var(--ff-primary-color);\n border-radius: 50%;\n width: 50px;\n height: 50px;\n animation: spin 1s linear infinite;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 999;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n\n",document.head.appendChild(x)}"function"==typeof SuppressedError&&SuppressedError;const r=(e,n)=>{const t=document.createElement("div");t.classList.add("ff_error_container");const o=document.createElement("h1");o.classList.add("ff_error_heading");const i=document.createElement("p");return i.classList.add("ff_error_text"),o.innerText=e,i.innerText=n,t.appendChild(o),t.appendChild(i),t};function l(e,o,a,r,l){return i(this,void 0,void 0,(function*(){const i=yield t.initializePubnub({spaceId:e,accessToken:o,apiUrl:a});window.CROSSENV_FLATFILE_API_KEY=o;const d=[`space.${e}`];i.subscribe({channels:d}),r.mount(new n.Browser({apiUrl:a,accessToken:o,fetchApi:fetch}));return i.addListener({message:e=>{var t;const i=null!==(t=JSON.parse(e.message))&&void 0!==t?t:{};"job:outcome-acknowledged"===i.topic&&"complete"===i.payload.status&&i.payload.operation===(null==l?void 0:l.operation)&&(null==l||l.onClose({})),(e=>{if(!e)return;const t=e.src?e.src:e,i=new n.FlatfileEvent(t,o,a);null==r||r.dispatchEvent(i)})(i)}}),i}))}const d=e=>i(void 0,void 0,void 0,(function*(){const{mountElement:n,errorTitle:t,document:o,workbook:a}=e;try{a&&(yield(e=>i(void 0,void 0,void 0,(function*(){var n;const{apiUrl:t,accessToken:o,workbook:i,spaceId:a,environmentId:r}=e,l=`${t}/v1/workbooks`,d=yield fetch(l,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify(Object.assign({spaceId:a,environmentId:r},i))}),s=yield d.json();if(!s||!s.data||!s.data.id)throw new Error("Failed to create workbook");if(!d.ok){const e=(null===(n=null==s?void 0:s.errors[0])||void 0===n?void 0:n.message)||"Failed to create workbook";throw new Error(e)}return s.data})))(e)),yield(e=>i(void 0,void 0,void 0,(function*(){var n;const{apiUrl:t,accessToken:o,themeConfig:i,sidebarConfig:a,userInfo:r,spaceInfo:l,spaceId:d,environmentId:s,spaceBody:c}=e,f=`${t}/v1/spaces/${d}`,p=yield fetch(f,{method:"PATCH",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify({environmentId:s,metadata:Object.assign({theme:i,sidebarConfig:a||{showSidebar:!1},userInfo:r,spaceInfo:l},(null==c?void 0:c.metadata)||{})})}),u=yield p.json();if(!u||!u.data||!u.data.id)throw new Error("Failed to update space");if(!p.ok){const e=(null===(n=null==u?void 0:u.errors[0])||void 0===n?void 0:n.message)||"Failed to update space";throw new Error(e)}return u.data})))(e),o&&(yield(e=>i(void 0,void 0,void 0,(function*(){var n;const{apiUrl:t,accessToken:o,document:i,spaceId:a}=e,r=`${t}/v1/spaces/${a}/documents`,l=yield fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify({title:null==i?void 0:i.title,body:null==i?void 0:i.body})}),d=yield l.json();if(!d||!d.data||!d.data.id)throw new Error("Failed to create document");if(!l.ok){const e=(null===(n=null==d?void 0:d.errors[0])||void 0===n?void 0:n.message)||"Failed to create document";throw new Error(e)}})))(e))}catch(e){const o=document.getElementById(n),i=r(t,e);null==o||o.appendChild(i)}})),s=({onRecordHook:a,onSubmit:r,slug:l,submitSettings:d})=>n.FlatfileListener.create((n=>{if(a&&n.use(o.recordHook(l,((e,n)=>i(void 0,void 0,void 0,(function*(){return a(e,n)}))))),r){const o=Object.assign(Object.assign({},t.DefaultSubmitSettings),d);n.filter({job:"workbook:simpleSubmitAction"},(n=>{n.on("job:ready",(n=>i(void 0,void 0,void 0,(function*(){const{jobId:i,spaceId:a,workbookId:l}=n.context;try{yield e.jobs.ack(i,{info:"Starting job",progress:10});const n=new t.JobHandler(i),{data:d}=yield e.sheets.list({workbookId:l}),s=new t.SheetHandler(d[0].id);yield r({job:n,sheet:s}),yield e.jobs.complete(i,{outcome:{message:"complete"}}),o.deleteSpaceAfterSubmit&&(yield e.spaces.archiveSpace(a))}catch(n){i&&(yield e.jobs.cancel(i)),console.error("Error:",n.stack)}}))))}))}}));function c(e){var n;return i(this,void 0,void 0,(function*(){const{publishableKey:o,displayAsModal:c=!0,mountElement:f="flatfile_iFrameContainer",space:p,sheet:u,spaceBody:m=null,apiUrl:h="https://platform.flatfile.com/api",baseUrl:b="https://spaces.flatfile.com",spaceUrl:y="https://spaces.flatfile.com",exitTitle:v="Close Window",exitText:g="Are you sure you would like to close this window? This will end your current data import session.",exitPrimaryButtonText:x="Yes, exit",exitSecondaryButtonText:w="No, stay",closeSpace:k,errorTitle:E="Something went wrong",name:_,environmentId:C,workbook:T,themeConfig:I,document:S,sidebarConfig:j,userInfo:L,spaceInfo:A,listener:z,onRecordHook:F,onSubmit:B,onCancel:O}=e,$=y||b;try{const e=`${h}/v1/spaces`;let r=T;const p=()=>i(this,void 0,void 0,(function*(){var n;const i=Object.assign({name:_||"Embedded Space",autoConfigure:!1,labels:["embedded"]},m);r||u||(i.autoConfigure=!0),!r&&u&&(r=t.createWorkbookFromSheet(u,!!B));const a=yield fetch(e,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${o}`},body:JSON.stringify(i)}),l=yield a.json();if(!a.ok){const e=(null===(n=null==l?void 0:l.errors[0])||void 0===n?void 0:n.message)||"Failed to create space";throw new Error(e)}return l.data})),b=document.createElement("div");b.id=f,document.body.appendChild(b);const y=yield p();if(!(null==y?void 0:y.id)||!(null==y?void 0:y.accessToken))throw new Error("Unable to create space, please try again.");let M;const U=(null===(n=null==r?void 0:r.sheets)||void 0===n?void 0:n[0].slug)||"slug";return M=z?yield l(y.id,y.accessToken,h,z,k):yield l(y.id,y.accessToken,h,s({onRecordHook:F,onSubmit:B,slug:U}),k),yield d({apiUrl:h,publishableKey:o,workbook:r,spaceId:y.id,accessToken:y.accessToken,environmentId:C,mountElement:f,errorTitle:E,themeConfig:I,document:S,sidebarConfig:j,userInfo:L,spaceInfo:A}),a(y.id,y.accessToken,c,f,v,g,x,w,$,k,M,O),{spaceId:y.id}}catch(e){const n=document.getElementById(f),t=r(E,e);null==n||n.appendChild(t)}}))}const f=c;exports.initializeFlatfile=f,exports.startFlatfile=c;